import request from '@/utils/request'

/**
 * 消息管理模块API
 */
export default {
  /**
   * 获取消息列表
   * @param {Object} params 查询参数
   * @param {number} [params.pageNum=1] 页码
   * @param {number} [params.pageSize=10] 每页条数
   * @param {number} [params.type] 消息类型（可选）
   * @returns {Promise<Object>} 消息列表分页数据
   */
  getMessages: (params = {}) => request.get('/api/messages', {
    params: {
      pageNum: params.pageNum || 1,
      pageSize: params.pageSize || 10,
      type: params.type
    }
  }),

  /**
   * 获取消息详情
   * @param {number} id 消息ID
   * @returns {Promise<Object>} 消息详情
   */
  getMessageDetail: (id) => request.get(`/api/messages/${id}`),

  /**
   * 标记消息为已读
   * @param {number} id 消息ID
   * @returns {Promise<boolean>} 操作结果
   */
  markAsRead: (id) => request.put(`/api/messages/${id}/read`),

  /**
   * 获取未读消息数量
   * @returns {Promise<number>} 未读消息数
   */
  getUnreadCount: () => request.get('/api/messages/unread/count'),

  /**
   * 私聊相关接口
   */
  chat: {

    /**
     * 获取聊天联系人列表
     * @param {Object} params 查询参数
     * @param {number} [params.pageNum=1] 页码，不能小于1
     * @param {number} [params.pageSize=20] 每页条数，不能小于1
     * @returns {Promise<Object>} 聊天联系人分页数据
     */
   getContacts: (params = {}) => request.get('/api/v1/chat/contacts', {
     params: {
       pageNum: params.pageNum || 1,
       pageSize: params.pageSize || 20
     }
   }),
    /**
     * 发送私聊消息
     * @param {Object} messageDTO 消息数据
     * @param {number} messageDTO.targetUserId 接收者用户ID
     * @param {string} messageDTO.content 消息内容
     * @param {string} messageDTO.type 消息类型
     * @returns {Promise<number>} 消息ID
     */
    sendMessage: (messageDTO) => request.post('/api/v1/chat/send', messageDTO),

    /**
     * 获取与指定用户的聊天记录
     * @param {number} targetUserId 目标用户ID
     * @param {Object} params 查询参数
     * @param {number} [params.pageNum=1] 页码
     * @param {number} [params.pageSize=20] 每页条数
     * @returns {Promise<Object>} 聊天记录分页数据
     */
    getChatHistory: (targetUserId, params = {}) => request.get(`/api/v1/chat/history/${targetUserId}`, {
      params: {
        pageNum: params.pageNum || 1,
        pageSize: params.pageSize || 20
      }
    }),

    /**
     * 标记与指定用户的消息为已读
     * @param {number} senderId 发送者用户ID
     * @returns {Promise<void>}
     */
    markAsRead: (senderId) => request.put(`/api/v1/chat/read/${senderId}`),

    /**
     * 获取未读私聊消息数量
     * @returns {Promise<number>} 未读消息数
     */
    getUnreadCount: () => request.get('/api/v1/chat/unread/count')
  }
}
